<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>
  <script>
    // es5 的构造函数（类）
    // 1.构造函数的函数名  首字母大写  与普通函数区分
    //  2.构造函数 用new 关键字进行调用
    //  3.通过关键字 this指向 去添加属性和方法
    //  4.构造函数不能有return 返回值
    //  5.在new 关键字调用时  构造函数 会自动返回调用
    //  6.通过构造函数 创建对象时，避免重复代码 冗余  传递参数不同 创建不同的对象


    // 面试题二  new关键字 发生了什么
    //1 创建一个空对象  var obj={}
    //2 设置新对象的constructor属性为构造函数的名称，设置新对象的__proto__属性指向构造函数的prototype对象；
    // obj.constructor = 'Car'
    // obj.__proto__ = Car.prototype
    //3.使用新对象调用函数，函数中的this被指向新实例对象：
    // Car.call(obj)
    //4.返回这个对象obj
    function Car(name, age) {
      this.name = name;
      this.age = age;
      this.run = function () { }
    }
    Car.prototype.lun = 4;
    Car.prototype.say = function () { }
    // es6的类  class 
    // class Car {
    //   constructor(name, age) {//属性
    //     this.name = name;
    //     this.age = age;
    //   }
    //   run() {
    //     console.log("跑")
    //   }
    //   // static静态方法  是由构造函数直接调用的  Car.jiayou()
    //   static jiayou() {
    //     console.log("加油")
    //   }
    // }
    var mini = new Car("宝马Mini", "5");
    mini.run();

    Car.jiayou()


  </script>
</body>

</html>